架构图一键生成

作者:ContextWeave 来源:SkillHub 适用工具:通用 更新:2026-08-24 浏览:17 版本:1.2.6
类型:智能体 难度:入门 免费
查看原技能 · 前往 SkillHub ↗

ContextWeave Skill

本 Skill 是 ContextWeave 的绘图请求客户端:把用户需求整理成自包含的绘图意图,通过本地脚本与云端后端协同生成结果。客户端本身无状态,会话状态由后端托管。

常见触发语包括:“画图”“画个架构图”“生成流程图”“画个思维导图”“生成 CW 图”“可视化这段代码”。

一、三条不变式(核心心智模型)

新手可以先记住三个通俗结论:把背景说完整、把关系说清楚、一张图只回答一个核心问题。下面的正式规则必须完整遵守,它们也是处理未列举场景时的推理依据。

不变式 1:解引用一切(Dereference Everything)

新手理解: 不要只告诉后端“去参考某个东西”,要先把它真正需要的内容带进本次请求。

后端运行在云端/隔离沙盒中,看不见你本地的任何文件、会话历史与你脑中的任何背景知识。它只接收本次请求中显式提供的纯文本。因此,发出请求前必须把所有“引用”解引用为自包含的语义文本:

悬空引用 解引用动作
文件路径(“请参考 /path/to/x”) 必须先自行使用本地工具读取文件,将其核心逻辑拍平(Flatten)成纯文本写入 # Request
专有名词/缩写(未释义的术语) 补全最小信息集:角色(对象类型与责任边界)、层级(所属模块/抽象层)、动作(关键行为)、上下游关系
旧图上下文(“基于上一张图修改”) 把现有 CW 文本放入 input_file# CW 段随请求提交;session_id 从上一轮返回 JSON 中提取复用,不要求用户重复输入。具体操作见 高级操作
  • 未释义的术语不得直接作为节点标签、分组标题或关系端点输出(禁止“仅列词成框”)。
  • 若输入仅包含术语清单,先补全最小信息集,再进入结构决策。

不变式 2:论证而非展示

新手理解: 图不是把名词摆出来,而是要用结构证明它们之间的逻辑。

  • 图结构必须服务于语义论证:概念层级、因果关系、依赖链路是结构主线。
  • 每条关系必须可复述为明确语句(如“A 依赖 B”“C 触发 D”),禁止用“元素靠得近”替代关系定义。
  • 同构校验:移除文字标签后,结构本身仍应能传达核心逻辑。

不变式 3:一图一主题(先定层级,再定粒度)

新手理解: 先决定这张图回答什么,再决定需要画多细。

借鉴“多级抽象”原则:宏观图展示全局脉络与骨架,中观图展示子系统或模块间的交互结构,微观图展示具体的执行逻辑与落地细节。不要试图在一张图里展示所有内容。

  • 先识别信息焦点与抽象层级,再决定画多细。
  • 单图装不下时必须进入多视图判断,按“四、多视图触发与确认门”及其参考文档处理。
  • 输出前自检:关键模块是否标注了职责?连线关系是否明确?

二、普通单图:六步完成

1. 解析材料

识别核心问题、信息焦点与需要读取的文件。只读取用户明确指定且与绘图有关的内容,并按不变式 1 补全上下文。

2. 写出一句话重点

例如:

展示订单从网关进入订单服务、完成库存校验并发起支付的主链路;日志与监控只作为支撑组件弱化展示。

3. 确定呈现方式与配色

使用“三、核心参数:先理解再映射”中的通俗判断表。需求明确时直接使用用户选择;确有歧义时才提问。用户说“随便”或“你决定”时,自主选择并继续。

4. 写入请求文件

在当前工作区创建 .cw_skill/requests/request_<timestamp>.md,并使用绝对路径:

`

# Request
[展示重点、绘图意图、必要背景、明确关系与已确认的展示要求,50-5000 字符]

# CW

cw

`

首次生成允许 # CW 为空。修改已有图时,将当前 CW 全文放进该代码块。

5. 执行脚本

本任务首次联网前,按 外部数据传输与授权 简要说明接收方、用途及涉及的数据类别并取得一次明确同意。同一任务内未新增敏感数据类别时不重复询问。

node scripts/generate_contextweave.cjs --input_file "<绝对路径>" --output_name "<语义化英文名>" --output_dir "docs/diagrams"
  • input_file 必须存在且为绝对路径。
  • output_name 必填,例如 order_payment_flow
  • user_request 默认长度为 50-5000 字符,可由 CONTEXTWEAVE_MIN_REQUEST_LENGTH / CONTEXTWEAVE_MAX_REQUEST_LENGTH 调整。
  • 已确定的呈现逻辑、构图范式和精确配色必须按第三节显式传参。
  • 脚本会保存 <output_name>.cw,并下载 SVG/HTML 产物。

6. 按固定格式回复

最终回复必须是单个 JSON 对象,不能附加 Markdown、标题或解释。字段顺序固定为 scriptinput_filestatussession_idresulterrorstatus 只能是 okerror

成功模板:

{"script":"generate_contextweave.cjs","input_file":"/abs/path/request_xxx.md","status":"ok","session_id":"<session_id>","result":{"run_id":"<run_id>","svg_url":"<svg_url>"},"error":null}

失败模板:

{"script":"generate_contextweave.cjs","input_file":"/abs/path/request_xxx.md","status":"error","session_id":null,"result":null,"error":{"code":"EXECUTION_NOT_PERFORMED","message":"未完成落盘或未执行脚本"}}

三、核心参数:先理解再映射

这些术语和配色参数属于核心能力。先按自然语言判断,再使用表中的真实脚本参数。

3.1 呈现逻辑:图主要讲什么

呈现逻辑通过 --diagram_style 传入。

用户想看什么 通俗解释 参数
组件、系统或服务之间的关系 看“谁与谁相连” --diagram_style topology
步骤、分支、因果或时序 看“事情怎样发生” --diagram_style logic
流程与组件归属同时重要 看“步骤发生在哪个系统” --diagram_style hybrid
从中心主题逐层展开 看“知识怎样分支” --diagram_style mindmap

3.2 构图范式:画面怎样组织

构图范式通过 --morphology 传入。

用户希望怎样呈现 通俗解释 参数
用区域和底板强调边界 强调模块归属 --morphology container
用连线和方向强调信号 强调数据或控制流 --morphology flow
用排版和留白承载文字 强调说明与论述 --morphology editorial

两组参数彼此独立。例如:topology + container 适合分层架构,logic + flow 适合业务流程,hybrid + container 适合跨系统审批,topology + editorial 适合科研框架。

3.3 最少澄清问题

只有缺失信息会显著改变结果时才询问,最多覆盖四项:

  1. 想看组件关系、步骤流转、两者混合,还是思维导图?
  2. 更强调区域分组、流向,还是文字说明?
  3. 希望使用什么整体配色或主色?
  4. 是否需要高亮特定节点、分组、语义类别或链路?分别使用什么颜色?

用户已经明确图类型、构图范式和配色时跳过提问。用户回答“你决定”时,自主选择最匹配的组合,并在 # Request 中简述依据。

3.4 整体配色:base_palette

  • “科技蓝”“暖色”“深色”等语义色调写入 # Request
  • 用户给出 6 位 Hex、受支持色名(红/蓝/绿/橙/紫/金及对应英文)或风格预设(corporate_red / corporate_blue / tech_blue)时,组装为 base_palette,通过 --base_palette 传入。
  • Hex 色值只能出现在 base_paletteaccent_targets 中,不能写入 # Request 或其他自由文本参数。

示例:

--base_palette '{"primary":"#C00000","style_preset":"corporate_red"}'

3.5 局部高亮:accent_targets

用户指定高亮对象与颜色时,组装为数组并通过 --accent_targets 传入:

--accent_targets '[{"name":"支付网关","color":"暖橙"},{"name":"订单服务","color":"#2F6BFF"}]'
  • name 使用图中实际应出现的节点、分组或语义对象名称。
  • 用户已明确对象和颜色时直接组装,不能因为节点尚未生成而省略,也不能只把要求留在 # Request 中。
  • 只有对象或颜色确有歧义时才追问;用户没有高亮要求时不传该参数。

3.6 展示意图边界

可以直接表达 必须翻译或拒绝承诺
模块分组、层级、主次、语义色调 精确坐标、字号、线宽、透明度、间距
通过结构化参数传递的主色与高亮色 在自由文本中散落 Hex、RGBA 或像素值

把“放在右上角”翻译成“作为边缘支撑组件,与主链路分离”。图元布局和坐标由后端决定;结构正确性优先于装饰效果。

四、多视图触发与确认门

出现下列信号时停止普通单图流程,并读取 多视图与 Scenarios

  • 用户同时要求全局、模块和执行细节;
  • 多个子系统需要独立视图;
  • 同一套组件需要分别突出多条链路或状态;
  • 为了装进单图必须混合多个抽象层级或隐藏关键关系。

如果判断需要拆分,在创建 input_file 和调用脚本前,必须先向用户给出拆分机制、视图名称、各视图焦点、抽象层级和拆分理由,并阻塞等待明确确认。用户原请求已明确指定拆分方式与视图内容时可视为已确认。

核心入口只负责识别触发条件和执行确认门。layersscenarios 的判断、案例、组合边界及单一数据源规则按需从参考文档读取。

五、按需读取的进阶文档

触发条件 必读文档
需要拆模块、拆层级或在同一架构上切换链路 多视图与 Scenarios
修改已有图、导入/导出 CW、添加文件链接 高级操作
脚本超时、报错、等待专家处理、额度不足或提交反馈 异常恢复
任何准备向 ContextWeave 服务发送数据的操作 外部数据传输与授权

只读取当前任务相关的文档,不要默认加载全部参考资料。

六、协议与安全硬约束

  • 只向官方服务 https://pptx.chenxitech.site 发送完成任务所需的数据。首次联网前简要说明本任务涉及的数据类别与用途并取得明确同意;未授权时停止在脚本调用前。
  • 一次授权覆盖当前任务内已披露数据类别的生成、修改、导出和轮询,不重复询问。后续新增完整 CW、绝对 base_path、邮箱、验证码或反馈内容时,只补充说明新增类别并再确认一次。
  • 用户直接提供数据不等于外发授权。说明时只列类别,不回显完整验证码、CW 全文或绝对路径;获得授权后必须真正落盘并执行脚本。
  • 只读取用户明确指定的输入文件;路径限制在当前工作区,禁止遍历用户目录或无关配置。
  • 正常生成使用内置默认匿名凭据;禁止主动索要 API Key、要求用户配置环境变量或提示鉴权。
  • 遇到脚本错误时读取 异常恢复,不要凭错误名称猜测恢复步骤。

七、完整反模式清单

# 反模式 违反 正确做法
1 # Request 中出现“请参考文件 /path/to/x” 不变式 1 自行读取文件,拍平为纯文本写入 # Request
2 术语未释义直接作为节点或分组标签 不变式 1 补全角色、层级、动作、上下游后再出图
3 修改已有图时不带 # CW 不变式 1 将现有 CW 放入 # CW 并复用 session_id
4 用“元素靠得近”表达关系 不变式 2 使用明确、带方向且可复述的关系
5 一张图塞入所有细节 不变式 3 按受众确定层级,复杂时进入多视图判断
6 承诺像素级布局或精确样式 §3.6 翻译为语义级意图,布局交给后端
7 只输出分析或命令而不调用脚本 §二、§六 落盘并实际执行对应脚本
8 绘图与 Link 注入合并为一次请求 高级操作 先生成结构,再批量注入链接
9 长耗时让用户干等或直接抛错 异常恢复 说明状态并主动调用 recompile 轮询
10 失败后不给用户留下反馈入口 异常恢复 说明原因,按需收集联系方式并提交反馈
11 未经确认擅自拆分多视图 §四 先给拆分方案并等待用户确认
12 意图不明确时把风格决策完全交给后端猜测 §三 只补问会改变结果的选项,并显式传参
13 把用户提供数据或提出绘图请求视为外发授权 §六 首次联网前简要说明本任务的数据类别与用途,并取得一次明确同意

八、输出前自检

  • [ ] 本地文件和旧图引用已展开为后端可理解的内容。
  • [ ] 专有名词已补充角色、层级、动作和上下游。
  • [ ] 每条关键关系都能复述成明确语句。
  • [ ] 图只回答一个核心问题;需要拆分时已读取参考文档并获得确认。
  • [ ] --diagram_style--morphology 已按用户意图显式设置。
  • [ ] 精确主色和高亮色只通过 base_palette / accent_targets 传递。
  • [ ] 已简要说明本任务的外发数据类别与用途并获得授权;新增敏感类别时已补充确认。
  • [ ] 已真正落盘并执行脚本,最终回复是合法的单个 JSON 对象。

九、常见问题(FAQ)

1. 报错如何处理?

  • 生成超时或等待过长:遇到 WAITING_FOR_EXPERT_PROCESSING 或生成耗时较长时,说明系统正在处理复杂结构。主动调用 recompile_contextweave.cjs 轮询,同时简短告知用户仍在处理。
  • 解析错误或执行失败:检查输入文本、绝对路径和请求长度。连续失败时可简化请求或引导重试。
  • 额度不足:出现 PAYMENT_REQUIREDRATE_LIMIT_EXCEEDED 时,按 异常恢复 的验证码流程处理,不要提前索要凭据。

2. 网络超时怎么办?

  • API_ERROR 已由脚本执行 3 次指数退避重试。
  • 仍失败通常表示云端负载或本地网络异常。告知用户当前服务繁忙;需要收集联系方式与提交反馈时,使用 异常恢复 的流程。

3. 不支持哪些图表类型?

  • 精确像素级布局:不支持指定组件的绝对坐标、宽高、字号或间距。
  • 纯手绘或特殊矢量插画:不支持手绘插画、复杂 3D 建模或动态动画。
  • 高度定制的统计图表:复杂折线图、柱状图、散点图应使用专业数据分析工具。

遇到超出能力边界的请求时,应直接说明限制,并在可能时建议更合适的工具类型。